//
// Created by daiyizheng on 2022/4/12.
//

#include <vector>
using namespace std;
class Solution {
public:

    //跟硬币兑换相似，但是不同顺序对应不同的解，
    int combinationSum4(vector<int>& nums, int target) {

        //定义维度
        vector<int> dp(target+1,0);
        dp[0]=1;
        for(int i=0;i<=target;i++)
        {
            for(int j=0;j<nums.size();j++)
            {
                if(i<nums[j])
                    dp[i]=dp[i];
                if(i>=nums[j]&&dp[i]<INT_MAX-dp[i-nums[j]])
                    dp[i]+=dp[i-nums[j]];
            }
        }
        return dp[target];
    }
};